package com.silence.gmall.product.assembler;

import com.silence.gmall.product.domain.entity.SkuAttrValue;
import com.silence.gmall.product.dto.SkuAttrValueDto;
import org.mapstruct.*;

import java.util.List;

/**
 * @Author silence
 * @Date 2025-08-18 23:11
 * @Email 792245022@qq.com
 * @Version 1.0
 * @Description sku平台属性值关联表工厂
 */
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface SkuAttrValueFactory {

    /**
     * 将 SkuAttrValueDto 转换为 SkuAttrValue
     *
     * @param source 源对象
     * @return 目标对象
     */
    @Named("skuAttrValueDto2SkuAttrValueWithContext")
    @Mapping(target = "skuId", expression = "java(skuId)")
    SkuAttrValue skuAttrValueDto2SkuAttrValueWithContext(SkuAttrValueDto source, @Context Long skuId);

    /**
     * 将 SkuAttrValueDtoList 转换为 SkuAttrValueList
     *
     * @param source 源对象
     * @return 目标对象
     */
    @Named("skuAttrValueDtoList2SkuAttrValueListWithContext")
    @IterableMapping(qualifiedByName = "skuAttrValueDto2SkuAttrValueWithContext")
    List<SkuAttrValue> skuAttrValueDtoList2SkuAttrValueListWithContext(List<SkuAttrValueDto> source, @Context Long skuId);

}
